const router = require('koa-router')()
const writeJsonFile = require('write-json-file');
const loadJsonFile = require('load-json-file');

router.prefix('/blog')

// 新增一条blog记录
router.get('/creatBlog', async function (ctx, next) {
  sethead(ctx)
  // 查询出来已经存储的json，找到最后一条的id，id++,插入新的条
  let json = await loadJsonFile('db/blog.json')
  ctx.request.query.token
  let temporaryjson = {
    title: '个人网站--前端',
    titleRight: 'code',
    icon: 'code',
    body: '开始搭建自己的个人网站，以后在发布一些代码，嵌影纸雕以及一些工具。前端使用Umi框架，Arwes做为UI，Howler制作音效。',
    date: '2021-03-01',
    language: 'Umi Howler Arwes',
  }
  // 如果文件中还没有一条的时候，默认id为0
  if (json.length) {
    temporaryjson = {
      id: json.length + 1,
      title: '个人网站--前端',
      titleRight: 'code',
      icon: 'code',
      body: '开始搭建自己的个人网站，以后在发布一些代码，嵌影纸雕以及一些工具。前端使用Umi框架，Arwes做为UI，Howler制作音效。',
      date: '2021-03-01',
      language: 'Umi Howler Arwes',
    }
  } else {
    temporaryjson = {
      id: 0,
      title: '个人网站--前端',
      titleRight: 'code',
      icon: 'code',
      body: '开始搭建自己的个人网站，以后在发布一些代码，嵌影纸雕以及一些工具。前端使用Umi框架，Arwes做为UI，Howler制作音效。',
      date: '2021-03-01',
      language: 'Umi Howler Arwes',
    }
  }
  // 插入记录
  json.push(temporaryjson)
  await writeJsonFile('db/blog.json', json);
  ctx.body = {
    code: 200
  }
})
// 修改一条blog记录
router.get('/updataBlog', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/blog.json')
  json[ctx.request.query.token] = ctx.request.query.token
  await writeJsonFile('db/blog.json', json);
  ctx.body = {
    code: true
  }
})
// 删除一条blog记录
router.get('/removeBlog', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/blog.json')
  json[ctx.request.query.token] = ctx.request.query.token
  await writeJsonFile('db/blog.json', json);
  ctx.body = {
    code: true
  }
})

// 获取blob记录，根据
router.get('/getBlog', async function (ctx, next) {
  sethead(ctx)
  let json = await loadJsonFile('db/blog.json')
  // 倒序获取
  let list = []
  for (let i = json.length - 1; i > -1; i--) {
    list.push(json[i])
  }
  let start = ctx.request.query.start
  let size = ctx.request.query.size
  let rsplist = []
  for (let i = start; i < list.length; i++) {
    if(rsplist.length==size){
      break;
    }else{
      rsplist.push(list[i])
    }
  }
  ctx.body = {
    code: 200,
    data: rsplist,
  }
})
// 外面设置返回头失效，临时在对象中设置返回头解决跨域等问题
function sethead(ctx) {
  ctx.set('Access-Control-Allow-Origin', '*'); //允许来自所有域名请求(不携带cookie请求可以用*，如果有携带cookie请求必须指定域名)
  // ctx.set("Access-Control-Allow-Origin", "http://localhost:8080"); // 只允许指定域名http://localhost:8080的请求

  ctx.set('Access-Control-Allow-Methods', 'OPTIONS, GET, PUT, POST, DELETE'); // 设置所允许的HTTP请求方法

  ctx.set('Access-Control-Allow-Headers', 'x-requested-with, accept, origin, content-type'); // 字段是必需的。它也是一个逗号分隔的字符串，表明服务器支持的所有头信息字段.
  // 服务器收到请求以后，检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后，确认允许跨源请求，就可以做出回应。

  ctx.set('Content-Type', 'application/json;charset=utf-8'); // Content-Type表示具体请求中的媒体类型信息

  ctx.set('Access-Control-Allow-Credentials', true); // 该字段可选。它的值是一个布尔值，表示是否允许发送Cookie。默认情况下，Cookie不包括在CORS请求之中。
  // 当设置成允许请求携带cookie时，需要保证"Access-Control-Allow-Origin"是服务器有的域名，而不能是"*";
  ctx.set('Access-Control-Max-Age', 300);
}
module.exports = router
